#ifndef __CAN_HAL_H__
#define __CAN_HAL_H__
#include "lks32mc08x_sys.h"

typedef struct
{
	u32 id;
	u8 ide;
	u8 rtr;
	u8 TX[8];
	u8 RX[8];
	u8 rx_sta;
}can_parameter;
extern uint8_t can_flag;
extern uint32_t CanHalId;
extern can_parameter can_par ;
/**
 * @brief can 轮询发送数据程序  采用2.0B协议
 * 
 * @param id  发送id
 * @param ide 标准/扩展帧
 * @param rtr 远程帧/数据帧
 * @param msg 发送的数据
 * @param len 发送字节长度
 * @return u8  0：发送成功 !0：发送失败
 * 
 * id:标准ID(11位)/扩展ID(11位+18位)
 * 	    ide:0,标准帧;1,扩展帧
 * 		rtr:0,数据帧;1,遥控帧
 * 
 */
u8 can_send_msg(u32 id,u8 ide,u8 rtr, u8 *msg,u8 len);
/**
 * @brief  CAN轮询接收数据程序
 * 
 * @param id  接收id
 * @param ide 标准/扩展帧
 * @param rtr 数据帧/遥控帧
 * @param buf 数据 
 * @return u8  0：接收成功 !0：接收失败
 */
u8 can_receive_msg(u32* id,u8* ide,u8* rtr,u8 *buf);
void can_hal_init(void);
/**
 * @brief 根据 can_flag bit0 判断can接收是否完成
 * 
 * @return uint8_t 1 接收完成，0 接收未完成
 */
uint8_t can_rx_update(void);
void ID_Filter_Dual(u32 acr,u32 amr,u8 ide);


#endif




